package com.sinosoft.ptas.service;

import java.util.List;

import com.sinosoft.framework.core.common.exception.BusinessException;
import com.sinosoft.ptas.control.dto.OrganizationData;
import com.sinosoft.ptas.entity.TargetAttOrgRefEntity;
import com.sinosoft.ptas.entity.TargetAttributeEntity;

/**
 * 目标属性接口业务
 * @author lianWuJun
 * @time   2017年2月28日 上午10:38:32
 */
public interface TargetAttributeService {

	/**
	 * 创建目标属性
	 * @param targetAttribueEntity
	 * @return 
	 * @throws BusinessException
	 */
	public String createTargetAttribute(TargetAttributeEntity targetAttributeEntity) throws BusinessException;
	
	/**
	 * 根据目标属性编号查询目标属性
	 * @param id
	 * @return 目标属性实体
	 */
	public TargetAttributeEntity retrieveTargetAttributeById(String id);
	
	/**
	 * 根据目标属性的各个属性查询目标属性
	 * 如果传入参数为空，则查询全部信息
	 * @param targetAttribueEntity
	 * @return 目标属性实体集合
	 */
	public List<TargetAttributeEntity> retrieveTargetAttributes(TargetAttributeEntity targetAttributeEntity);
	
	/**
	 * 根据目标属性编号更新目标属性
	 * @param targetAttribueEntity
	 * @throws BusinessException
	 */
	public void updateTargetAttribute(TargetAttributeEntity targetAttributeEntity) throws BusinessException;
	

	/**
	 * 根据目标属性编号更新目标属性
	 * @param targetAttribueEntity
	 * @throws BusinessException
	 */
	public void updateTargetAttributepc(TargetAttributeEntity targetAttributeEntity) throws BusinessException;

	/**
	 * 根据目标属性编号删除目标属性
	 * @param id
	 * @throws BusinessException
	 */
	public void deleteTargetAttributeById(String id) throws BusinessException;
	
	/**
	 * 根据项目类型编号删除目标属性
	 * @param pcid
	 * @throws BusinessException
	 */
	public void deleteTargetAttributeByPcid(String pcid) throws BusinessException;
	
	/**
	 * 创建目标属性其他司的对应关系
	 * 目标属性与其他司的关系是多对一
	 * @param taIds 
	 * @param oid
	 * @param TargetAttOrgRefEntity 用来传时间和创建者
	 * @throws BusinessException
	 */
	public void createTargetAttributeOrganizationRef(TargetAttOrgRefEntity TargetAttOrgRefEntity,String[] taIds,String oid) throws BusinessException;

	/**
	 * 仅用于更新的补全关系
	 * @param TargetAttOrgRefEntity
	 * @throws BusinessException
	 */
	public void createTargetAttributeOrganizationRefupdate(TargetAttOrgRefEntity TargetAttOrgRefEntity) throws BusinessException;

	
	/**
	 * 根据目标属性编号查询司局
	 * @param taId
	 * @param identify   标识  0代表省司  1代表其他司
	 * @return 其他司实体集合
	 */
	public List<OrganizationData> retrieveOrganizationByTaId(String taId,String identify);
	
	/**
	 * 根据其他司编号查询目标属性
	 * @param orgId
	 * @return 目标属性实体集合
	 */
	public List<TargetAttributeEntity> retrieveTargetAttributeByOrgId(String orgId);
	
	/**
	 * 根据目标属性编号查询目标属性和司局的对应关系
	 * @param taid
	 * @return 目标属性和司局对应关系实体
	 */
	public TargetAttOrgRefEntity retieveTargetAttributeOrganizationRef(String taid);
	

	/**
	 * 根据项目类型编号查询目标属性
	 * @param pcid
	 * @return 目标属性实体集合
	 */
	public List<TargetAttributeEntity> retrieveTargetAttributeBypcid(String pcid);
	
}
